import request from './request'
import { AxiosPromise } from 'axios'

/**
 * 获取商家所有组织
 */
export function getOrganizeList(): AxiosPromise<
  APIResponseRows<Array<OrganizeAPIResponse.OrganizeListListItem>>
> {
  return request({
    url: '/system/organize/getList',
    method: 'get',
  })
}

// 新增或修改组织及组织人员
export function saveOrganize(data: object) {
  return request({
    url: '/system/organize/save',
    method: 'post',
    data,
  })
}

// 删除组织
export function deleteOrganize(data: object) {
  return request({
    url: '/system/organize/delete',
    method: 'delete',
    data,
  })
}

// 企业组织下拉数据列表
export function organizePageSelecct(data: object) {
  return request({
    url: '/system/select/organizePageSelecct',
    method: 'post',
    data,
  })
}

/**
 * 获取客服下拉选项列表
 * @param {OrderListAPIRequest.GetCustomerServiceOptionsParam} data - 请求参数
 * @param {1|2} data.ascriptionType - 模块类型归属：1=商用，2-家用
 * @param {string} data.departmentId - 部门ID
 * @param {string} data.id - 搜索ID
 * @param {number} data.limit - 每页显示数量
 * @param {string} data.name - 搜索关键词
 * @param {number} data.page - 当面页码
 */
export function empPageSelecct(
  data: OrderListAPIRequest.GetCustomerServiceOptionsParam,
): AxiosPromise<APIResponseList<OrderListAPIResponse.CustomerServiceOption>> {
  return request({
    url: '/system/select/empPageSelecct',
    method: 'post',
    data,
  })
}

// 企业角色下拉数据列表
export function rolePageSelecct(data: object) {
  return request({
    url: '/system/select/rolePageSelect',
    method: 'post',
    data,
  })
}

// 根据手机号获取账号信息
export function getInfoAccount(
  phone: string,
): AxiosPromise<EmployeeAPIResponse.EmployeeAccountInfoByPhone> {
  return request({
    url: '/system/account/getInfo/' + phone,
    method: 'get',
  })
}

// 根据组织ID获取组织信息
export function getInfoOrganize(id: string) {
  return request({
    url: '/system/organize/' + id,
    method: 'get',
  })
}

// 根据组织ID获取组织信息
export function getInfoEmp(id: string) {
  return request({
    url: '/system/emp/' + id,
    method: 'get',
  })
}

/**
 * 获取员工列表
 * @param data - 包含查询参数的对象
 * @param data.limit - 每页显示的员工数量
 * @param data.name - 员工姓名的模糊匹配值
 * @param data.organizeId - 组织ID，用于筛选属于特定组织的员工
 * @param data.page - 当前页码
 * @param data.phone - 员工电话号码的模糊匹配值
 * @returns 返回一个Promise对象，解析后包含员工列表的响应数据
 */
export function getEmpList(data: {
  limit: number
  name: string
  organizeId: string
  page: number
  phone: string
}): AxiosPromise<APIResponseList<OrganizeAPIResponse.OrganizeEmpListItem>> {
  return request({
    url: '/system/emp/getList',
    method: 'post',
    data,
  })
}

// 新增或修改人员及人员组织变更
export function saveEmp(data: object) {
  return request({
    url: '/system/emp/save',
    method: 'post',
    data,
  })
}

// 更改组织人员在职状态
export function changeEmpDepart(data: object, params: { depart: boolean }) {
  return request({
    url: '/system/emp/empDepart',
    method: 'put',
    params,
    data,
  })
}

// 删除职员
export function deleteEmp(data: object, id: string) {
  return request({
    url: '/system/emp/' + id,
    method: 'delete',
    data,
  })
}
